package com.wctj.api.business.entrepreneurship.service;

import com.wctj.api.infra.entrepreneurship.api.FuiouPayService;
import com.wctj.api.infra.common.api.DefaultPayMessageHandler;
import com.wctj.api.infra.common.api.PayMessageHandler;
import com.wctj.api.infra.common.api.PayService;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;

public interface FuiouPayManagerService {


    /**
     * 根据订单获取交易的基本信息
     * @param orderId
     * @return
     */
    FuiouPayService buildPayStorageConfig(String orderId );


    /**
     * 跳到支付页面
     * 针对实时支付
     *
     * @param price       金额
     * @return 跳到支付页面
     */
    String toPay( BigDecimal price,String orderId) ;


    /**
     * 支付回调地址 方式一
     *
     * 方式二，{@link #payBack(HttpServletRequest)} 是属于简化方式， 试用与简单的业务场景
     *
     * @param request 请求
     *
     * @return 是否成功
     * @throws IOException IOException
     * @see #payBack(HttpServletRequest)
     */
    @Deprecated
    String payBackBefore(HttpServletRequest request) throws IOException ;

    /**
     * 支付回调地址
     *
     * @param request 请求
     *
     * @return 是否成功
     *
     * 业务处理在对应的PayMessageHandler里面处理，在哪里设置PayMessageHandler，详情查看{@link PayService#setPayMessageHandler(PayMessageHandler)}
     *
     * 如果未设置 {@link PayMessageHandler} 那么会使用默认的 {@link DefaultPayMessageHandler}
     * @throws IOException IOException
     */
    @Deprecated
    String payBackOld(HttpServletRequest request) throws IOException;

    /**
     * 支付回调地址
     *
     * @param request 请求
     * @return 是否成功
     * <p>
     * 业务处理在对应的PayMessageHandler里面处理，在哪里设置PayMessageHandler，详情查看{@link PayService#setPayMessageHandler(PayMessageHandler)}
     * <p>
     * 如果未设置 {@link PayMessageHandler} 那么会使用默认的 {@link DefaultPayMessageHandler}
     * @throws IOException IOException
     */
     String payBack(HttpServletRequest request);
}
